home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / kernel / lfs / lfsStableMemInt.h < prev    next >
Encoding:
C/C++ Source or Header  |  1992-12-19  |  2.7 KB  |  77 lines

  1. /*
  2.  * lfsStableMemInt.h --
  3.  *
  4.  *    Declarations of kernel routines implementing the LFS stable memory
  5.  *    abstraction. The stable memory abstraction provides access a
  6.  *    collection of fixed size "entries" numbered consecutively from zero.
  7.  *    
  8.  *
  9.  * Copyright 1990 Regents of the University of California
  10.  * Permission to use, copy, modify, and distribute this
  11.  * software and its documentation for any purpose and without
  12.  * fee is hereby granted, provided that the above copyright
  13.  * notice appear in all copies.  The University of California
  14.  * makes no representations about the suitability of this
  15.  * software for any purpose.  It is provided "as is" without
  16.  * express or implied warranty.
  17.  *
  18.  * $Header: /cdrom/src/kernel/Cvsroot/kernel/lfs/lfsStableMemInt.h,v 1.4 92/09/03 18:13:31 shirriff Exp $ SPRITE (Berkeley)
  19.  */
  20.  
  21. #ifndef _LFSSTABLEMEMINT
  22. #define _LFSSTABLEMEMINT
  23.  
  24. #include <lfsInt.h>
  25. #include <lfsStableMem.h>
  26. #include <fsioFile.h>
  27. #include <lfsSeg.h>
  28.  
  29. /* constants */
  30.  
  31. /*
  32.  * Flags for LfsStableMemFetch. 
  33.  * LFS_STABLE_MEM_MAY_DIRTY    - Fetcher may change element.
  34.  * LFS_STABLE_MEM_REL_ENTRY     - The pasted entry should be released.
  35.  */
  36.  
  37. #define    LFS_STABLE_MEM_MAY_DIRTY 1
  38. #define    LFS_STABLE_MEM_REL_ENTRY 2
  39.  
  40. /* data structures */
  41.  
  42. /*
  43.  * Macro for accessing elements of LfsStableMemEntry.
  44.  * LfsStableMemEntryAddr - Return the memory address of an entry.
  45.  * LfsStableMemMarkDirty - Mark an entry has modified.
  46.  */
  47.  
  48. #define    LfsStableMemEntryAddr(entryPtr)    ((entryPtr)->addr)
  49. #define    LfsStableMemMarkDirty(entryPtr)    ((entryPtr)->modified = TRUE)
  50.  
  51. /* procedures */
  52.  
  53. extern ReturnStatus LfsStableMemLoad _ARGS_((struct Lfs *lfsPtr, 
  54.         LfsStableMemParams *smemParamsPtr, int checkPointSize, 
  55.         char *checkPointPtr, LfsStableMem *smemPtr));
  56. extern Boolean LfsStableMemClean _ARGS_((struct LfsSeg *segPtr, int *sizePtr, 
  57.         int *numCacheBlocksPtr, ClientData *clientDataPtr, 
  58.         LfsStableMem *smemPtr));
  59. extern Boolean LfsStableMemCheckpoint _ARGS_((struct LfsSeg *segPtr, 
  60.         char *checkPointPtr, int flags, int *checkPointSizePtr, 
  61.         ClientData *clientDataPtr, LfsStableMem *smemPtr));
  62. extern Boolean LfsStableMemLayout _ARGS_((struct LfsSeg *segPtr, int flags,
  63.         ClientData *clientDataPtr, LfsStableMem *smemPtr));
  64. extern void LfsStableMemWriteDone _ARGS_((struct LfsSeg *segPtr, int flags, 
  65.         ClientData *clientDataPtr, LfsStableMem *smemPtr));
  66. extern ReturnStatus LfsStableMemFetch _ARGS_((LfsStableMem *smemPtr, 
  67.         int entryNumber, int flags, 
  68.         LfsStableMemEntry *entryPtr));
  69. extern void LfsStableMemRelease _ARGS_((LfsStableMem *smemPtr, 
  70.         LfsStableMemEntry *entryPtr, Boolean modified));
  71.  
  72. extern ReturnStatus LfsStableMemDestory _ARGS_((struct Lfs *lfsPtr, 
  73.                         LfsStableMem *smemPtr));
  74.  
  75. #endif /* _LFSSTABLEMEMINT */
  76.  
  77.